//引入 "UserDao" 依赖
const UserDao = require("../../dao/user/user_dao.js");

// 用户 “业务逻辑层” 处理
const UserService = {
  // 登录
  login(req,res,next) {
    //POST请求方式获取数据
    const {username,password} = req.body;
    //数据访问：根据用户名查找用户信息
    UserDao.find({username})
           .then((data)=>{
            console.log(123);
            console.log(data);
            //判断密码
            if(data.length === 1){ // 存在于查找用户名相关的对象
              //比较密码
              if(password === data[0].password) { // 密码一致
                // 用户登录成功，在 session 中保存登录成功的用户信息
                req.session.loginUser = username;

                res.json({
                    res_code:1,
                    res_error:"",
                    res_body:{
                      status:1,
                      message:"success",
                      data:{
                        username:data[0].username
                      }
                    }});
              }else{ // 密码不一致
                res.json({
                    res_code:1,
                    res_error:"",
                    res_body:{
                      status:0,
                      message:"密码错误",
                      data:{}
                    }});
              }
              res.json();
            } else { // 不存在与查找用户名相关的对象
              res.json({
                    res_code:1,
                    res_error:"",
                    res_body:{
                      status:0,
                      message:"用户名不存在",
                      data:{}
                    }});
            }
            
           })
           .catch((err)=>{
            res.json({
              res_code:0,
              res_error:err,
              res_body:{}
            });
           });
  },

   // 添加用户
  add(req,res,next) {
    // 从请求中获取注册用户的用户名、密码等
    // GET 请求方式获取数据
    //const {username,password} = req.query;
    // POST 请求方式获取数据
    const {username,password,sex,birthdate,phone,address,userType} = req.body;
    
    // 用户密码加密处理
    // TODO......
    
    // 将添加用户的信息发送到数据访问层处理，保存到数据库中
    UserDao.save({username,password,sex,birthdate,phone,address,userType})
           .then((data)=>{
            res.json({
              res_code:1,
              res_error:"",
              res_body:{
                status:1,
                data:data
              }
            });
           })
           .catch((err)=>{
            console.log(err);
            res.json({
              res_code:0,
              res_error:err,
              res_body:{}
            });
           });
  },

  // 分页查询
  findByPage(req,res,next) {
    // 获取查询的页码
    const {page} = req.query;
    // 查询指定页码的数据
    UserDao.findByPage(page)
               .then((data)=> {
                  res.json({
                    res_code:1,
                    res_error:"",
                    res_body:{
                      status:1,
                      list:data
                    }
                  });
               })
               .catch((err)=> {
                  res.json({
                    res_code:0,
                    res_error:err,
                    res_body:{}
                  });
               })
  },

  // 按id查询用户
  findById(req,res,next) {
    // 获取查询的页码
    const {id} = req.query;
    console.log(id);
    // 查询指定id的数据
    UserDao.findById(id)
               .then((data)=> {
                  res.json({
                    res_code:1,
                    res_error:"",
                    res_body:{
                      status:1,
                      list:data
                    }
                  });
               })
               .catch((err)=> {
                  res.json({
                    res_code:0,
                    res_error:err,
                    res_body:{}
                  });
               })
  },

  // 检测用户名是否存在
  check(req,res,next) {

  },

  // 模糊查询用户信息
  query(req,res,next){
    //获取查询的条件
    const {username} = req.query;
    UserDao.queryUser(username)
      .then((data)=>{
        //查询成功
        res.json({res_code:1, res_error:"", res_body:{data}});
      })
      .catch((err)=>{
        //查询失败
        res.json({res_code:0, res_error:err, res_body:{}});
      });
  },


  // 修改用户信息，更新数据
  update(req,res,next) { 
    //获取要修改的数据
    const {_id,username,password,sex,birthdate,phone,address,userType}=req.body;
    // const {id} = req.query;
    // console.log(id);
    // 查询指定id的数据
    UserDao.update({_id,username,password,sex,birthdate,phone,address,userType})
        .then((data)=>{
          res.json({res_code:1,res_error:"",res_body:{data}});
        })
        .catch((err)=>{
          res.json({res_code:0,res_error:err,res_body:{}});
        });
  }, 
  // 删除用户信息
  delete(req,res,next) { 
    const {id} = req.query;
    console.log(id);
    //UserDao.delete(id);
    // 查询指定id的数据
    UserDao.delete(id)
               .then((data)=> {
                  res.json({
                    res_code:1,
                    res_error:"",
                    res_body:{
                      status:1,
                      list:data
                    }
                  });
               })
               .catch((err)=> {
                  res.json({
                    res_code:0,
                    res_error:err,
                    res_body:{}
                  });
               });
  }, 

  // 注销
  logout(req,res,next) {
    req.session.loginUser = null;
    res.json({
      res_code:1,
      res_error:"",
      res_body:{
        status:1
      }
    });
  }

}



module.exports = UserService;
